package com.ffggffgfv.backend.mapper;

import com.ffggffgfv.backend.entity.Role;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色数据访问层
 */
@Mapper
public interface RoleMapper {

    /**
     * 查询所有角色
     *
     * @param name   角色名称（可选）
     * @param offset 偏移量
     * @param limit  限制数量
     * @return 角色列表
     */
    List<Role> selectAll(@Param("name") String name, @Param("offset") int offset, @Param("limit") int limit);

    /**
     * 查询角色总数
     *
     * @param name 角色名称（可选）
     * @return 角色总数
     */
    long countAll(@Param("name") String name);

    /**
     * 根据ID查询角色
     *
     * @param id 角色ID
     * @return 角色对象
     */
    Role selectById(Long id);

    /**
     * 根据编码查询角色
     *
     * @param code 角色编码
     * @return 角色对象
     */
    Role selectByCode(String code);

    /**
     * 插入角色
     *
     * @param role 角色对象
     * @return 影响行数
     */
    int insert(Role role);

    /**
     * 更新角色
     *
     * @param role 角色对象
     * @return 影响行数
     */
    int update(Role role);

    /**
     * 根据用户ID查询角色列表
     *
     * @param userId 用户ID
     * @return 角色列表
     */
    List<Role> selectByUserId(Long userId);
}
